// pages/zither/zither.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInput: '',
    audioUrl1: '',
    imageUrl1: '',
    title1: '',
    audioUrl2: '',
    imageUrl2: '',
    title2: '',
    answer: '',
    prompt: '',
    style: '',
  },

  onInput: function(e) {
    this.setData({
      userInput: e.detail.value
    });
  },

  generateAudio: function() {
    const that = this;
    this.callKimiAPI(this.data.userInput).then(() => {
      wx.request({
        url: 'https://api.acedata.cloud/suno/audios',
        method: 'POST',
        data: {
          action: 'generate',
          prompt: this.data.prompt,
          model: 'chirp-v2-xxl-alpha',
          instrumental: true,
          style: this.data.style,
        },
        header: {
          "accept": "application/json",
          "authorization": "Bearer 5f36670de6ca41eba14d09e80df92d8d",
          "content-type": "application/json"
        },
        success: function(res) {
          console.log(res.data.data);
          if (res.statusCode === 200) {
            // 假设API返回的音频URL在res.data.audioUrl
            // console.log(res.data.data[1]);
            that.setData({
              audioUrl1: res.data.data[0].audio_url,
              imageUrl1: res.data.data[0].image_url,
              title1: res.data.data[0].title,
              audioUrl2: res.data.data[1].audio_url,
              imageUrl2: res.data.data[1].image_url,
              title2: res.data.data[1].title
            });
          } else {
            wx.showToast({
              title: '生成失败',
              icon: 'none'
            });
          }
        },
        fail: function() {
          wx.showToast({
            title: '请求失败',
            icon: 'none'
          });
        }
      });
    });
  },

  callKimiAPI: function(query) {
    const API_KEY = 'sk-6qCX5qyJMyjIjR9rI3yCRvlDscFgHVusO5Svsop2zuy52TnX';
    const BASE_URL = 'https://api.moonshot.cn/v1/chat/completions';
  
    return new Promise((resolve, reject) => {
      wx.request({
        url: BASE_URL,
        method: 'POST',
        header: {
          'Authorization': `Bearer ${API_KEY}`,
          'Content-Type': 'application/json'
        },
        data: JSON.stringify({
          model: 'moonshot-v1-8k',
          messages: [
            { role: 'user', content: "我想根据以下诗句生成一段音乐，请根据诗句给出这段音乐的不多于200字符的意境和不多于120字符的风格，英文，格式为：第一行为意境，第二行为风格。" + query }
          ]
        }),
        success: (res) => {
          if (res.statusCode === 200 && res.data.choices) {
            const response = res.data.choices[0].message.content;
            this.appendMessage({
              role: 'assistant',
              content: response
            });
            resolve(response);
          } else {
            reject('API调用失败');
          }
        },
        fail: (err) => {
          console.error('请求失败:', err);
          this.appendMessage({
            role: 'assistant',
            content: '抱歉，我暂时无法回答你的问题。'
          });
          reject('网络请求失败');
        }
      });
    });
  },

  appendMessage: function(message) {
    this.setData({
      answer: message.content,
      prompt: message.content.split('\n')[0],
      style: message.content.split('\n')[1],
    });
    console.log(this.data.style);
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})